#include "../s3c2440_soc.h"
#include "../init.h"

#include "lcd.h"
#include "lcd_control.h"

#define LCD_NUM 10
static p_lcd_params p_lcd_arry[LCD_NUM];
static p_lcd_params g_p_lcd_select;

int register_lcd(p_lcd_params plcd)
{
	int i = 0;
	for(i=0; i<LCD_NUM; i++)
	{
		if(!p_lcd_arry[i])
		{
			p_lcd_arry[i] = plcd;
			return i;
		}
	}
	return -1;
}

int select_lcd(char *name)
{
	int i = 0;
	for(i=0; i<LCD_NUM; i++)
	{///////////////////可以把p_lcd_arry[i]去掉，测试肯定也可以
		if(p_lcd_arry[i] && !strcmp(p_lcd_arry[i]->name, name))	//要使用指针指向name，strcmp成功返回0！！！
		{
			g_p_lcd_select = p_lcd_arry[i];
			return i;
		}
	}
#if 0	////有差异，当数组非空且名字相等，反之，当数组非空，但名字不匹配时候就结束了
	for(i=0; (!p_lcd_arry[i]) && (!strcmp(p_lcd_arry[i]->name, name)); i++)
	{
		g_p_lcd_select = p_lcd_arry[i];
		return i;
	}
#endif
	return -1;
}

void lcd_enable(void)
{
	lcd_control_enable();
}
void lcd_disable(void)
{
	lcd_control_disable();
}

void lcd_add(void)
{
	lcd_4_3_add();
}

void get_lcd_params(unsigned int *fb_base, unsigned int *bpp, unsigned int *xres, unsigned int *yres)
{
	*fb_base = g_p_lcd_select->fb_base;
	*bpp = g_p_lcd_select->bpp;
	*xres = g_p_lcd_select->xres;
	*yres = g_p_lcd_select->yres;
}

void lcd_init(void)
{
	//注册LCD
	lcd_add();

	//注册LCD控制器
	lcd_control_add();

	//选择LCD
	select_lcd("lcd_4_3");

	//选择控制器
	select_lcd_controler("s3c2440");

	//选定控制器后，用LCD参数来------初始化控制器
	lcd_control_init(g_p_lcd_select);///////////少了这个
}

